This invention relates to a programmable logic system including a programmable logic device and configuration storage device capable of storing a plurality of configurations and receiving updated configurations from an external source. More particularly, this invention relates to such a device in which the programmable logic device includes configuration circuitry for loading one of the plurality of configurations and for recovering from a configuration failure.
Early programmable logic devices were one-time configurable. For example, configuration may have been achieved by “blowing”—i.e., opening—fusible links. Alternatively, the configuration may have been stored in a programmable read-only memory. Later, programmable logic devices incorporating erasable programmable read-only memory (EPROM) for configuration became available. These devices could be reconfigured.
Still later, programmable logic devices incorporating static random access memory (SRAM) for configuration became available. These devices, which also can be reconfigured, store their configuration in a nonvolatile memory such as an EPROM, from which the configuration is loaded when the device is powered up. Such devices typically include the circuitry necessary to load the configuration from the nonvolatile storage.
More recently, programmable logic devices have been provided that have the ability to have their configurations updated remotely. For example, one such device is described in copending, commonly-assigned U.S. patent application Ser. No. 09/879,303, filed Jun. 12, 2001, now U.S. Pat. No. 6,738,962, which is hereby incorporated by reference in its entirety. Such devices have the circuitry needed to receive new configuration data, which are written into the nonvolatile memory to be used in place of the prior configuration.
In such a device, the prior configuration generally is not preserved at all once the new configuration begins loading. This is, at least in part, because if any portion of the old configuration were to remain active as the new configuration began to become active, the new configuration would form connections that might, depending on the specifics of the old configuration, create short circuits in view of connections formed by the portion of the old configuration that is still active. Such short circuits could generate heat that might damage or destroy the device. To prevent such damage, the old configuration generally is erased prior to loading of the new configuration.
As a result, if the new configuration is defective, the device may become useless, because the old configuration will have been deleted and the new configuration will not load. One solution is to provide external programming circuitry that can reload the old configuration or a different new configuration. However, in newer programmable logic devices, which have the capability to be configured as microprocessors (so-called “soft processors”), the programming circuitry may be part of the configuration. Once the device has been rendered inoperative by a bad configuration, it may not be possible in the field to reconfigure the soft processor configuration needed to load a working configuration.
While the device could be reconfigured by a technician or operator, in many applications, a technician may not be present, and it may be difficult or expensive to dispatch a technician. For example, the programmable logic device may be in a geographically remote location, such as a cellular communication tower on a remote hilltop, in which case it will be time-consuming and expensive to dispatch a technician, and all the while the cellular communication facility will be inoperative, causing further economic loss. Similarly, the programmable logic device may be part of a consumer electronic product that the user is permitted to reconfigure by a downloadable upgrade. If the reconfiguration fails, either a technician will have to be sent to the user's location or the user will have to send the product back to the manufacturer. Either way, there are costs involved and the user will be without a working product for an extended period.
For these reasons, it would be desirable to be able to provide a remotely reconfigurable programmable logic device having a configuration recovery mode, so that if a reconfiguration attempt fails, the device does not become completely inoperative.